package com.senlingspace.payment.douyin.bean.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.senlingspace.common.utils.http.HttpUtils;
import com.senlingspace.payment.douyin.DouyinFunctionEnum;
import com.senlingspace.payment.douyin.bean.response.DouyinOrderResponse;
import com.senlingspace.payment.douyin.bean.response.DouyinRefundResponse;
import lombok.Data;

/**
 * 抖音订单请求实体
 */
@Data
public class DouyinOrderRequest implements DouyinRequest<DouyinOrderResponse> {

    /**
     * 来客商户根账户ID
     */
    @JsonProperty("account_id")
    private String accountId;

    /**
     * 页数从1开始，如果使用page分页，页数*大小不能超过10000
     */
    @JsonProperty("page_num")
    private Integer pageNum;

    /**
     * 页大小，取值范围1～100
     */
    @JsonProperty("page_size")
    private Integer pageSize;

    /**
     * 创单结束时间（秒时间戳，创单起止时间必须同时传入）
     */
    @JsonProperty("create_order_end_time")
    private Long createOrderEndTime;

    /**
     * 创单起始时间（秒时间戳，创单起止时间必须同时传入）
     */
    @JsonProperty("create_order_start_time")
    private Long createOrderStartTime;

    /**
     * 根据游标滚动请求，直到返回结果数量小于请求的size或未返回search_after结束；
     * 首页传"0"，之后传返回参数中的CursorValue string数组拼接的string，
     * 如CursorValue返回参数["0","1"]，则传"0,1"；
     * 如果传入此参数，会优先使用cursor翻页，而不是page翻页
     */
    @JsonProperty("cursor")
    private String cursor;

    /**
     * 开发者系统中的订单号
     */
    @JsonProperty("ext_order_id")
    private String extOrderId;

    /**
     * 是否需要查询配送信息
     */
    @JsonProperty("get_secret_number")
    private Boolean getSecretNumber;

    /**
     * 抖音用户ID
     */
    @JsonProperty("open_id")
    private String openId;

    /**
     * 抖音生活服务订单ID
     */
    @JsonProperty("order_id")
    private String orderId;

    /**
     * 订单状态
     */
    @JsonProperty("order_status")
    private Integer orderStatus;

    /**
     * 修改结束时间（秒时间戳，修改起止时间必须同时传入）
     */
    @JsonProperty("update_order_end_time")
    private Long updateOrderEndTime;

    /**
     * 修改起始时间（秒时间戳，修改起止时间必须同时传入）
     */
    @JsonProperty("update_order_start_time")
    private Long updateOrderStartTime;

    @Override
    public DouyinFunctionEnum getFunction() {
        return DouyinFunctionEnum.query_order;
    }

    @Override
    public String getBody() {
        System.out.println(HttpUtils.buildGetUrlParams(null, this));
        return HttpUtils.buildGetUrlParams(null, this);
    }

    @Override
    public Class<DouyinOrderResponse> getResponseType() {
        return DouyinOrderResponse.class;
    }
}
